package com.wang.io;

import org.junit.jupiter.api.Test;

import java.io.FileReader;
import java.io.IOException;

/**
 * FileReader：用于从磁盘文件中读取数据(char)到内存中，指针起初指向文件内容的起始位置，后续记录上次读取的末尾位置(防止重复读取)。
 */
public class TestFileReader {

    /**
     * 构造方法：
     *   1. new FileReader(File/String)
     * 读取文件数据：
     *   1. read()：读取下一个字符，返回-1表示文件已经读完。效率较低。
     *   2. read(char[] buf)：批量读取字符，每次最多读取 buf.length 个字符，返回实际读取的字符个数，返回-1表示文件已经读完。
     */
    @Test
    public void test01() {
        String filePath = "e:\\a.txt";
        FileReader fileReader = null;
        char[] buf = new char[10];  // 缓冲数组
        int readLen = 0;  // 每次实际读取的字符个数

        try {
            fileReader = new FileReader(filePath);
            while ((readLen = fileReader.read(buf)) != -1) {  // 当文件还未读完
                System.out.print(new String(buf, 0, readLen));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}
